package com.agua.enturno.jobs;

import com.agua.enturno.excepciones.ExcepcionDeReglaDelNegocio;
import com.agua.enturno.modelo.agenda.Agenda;
import com.agua.enturno.modelo.agenda.JornadaLaboralHabitual;
import com.agua.enturno.persistencia.dao.AgendaDAO;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.transaction.annotation.Transactional;

/**
 * Tarea que se encarga de actualizar los horarios de las jornadas laborales habituales 
 * teniendo en cuenta la antelación máxima de las mísmas.
 *
 * @author Victor Del Rio
 */
public class ActualizarHorariosTask {
	
	private static final Log logger = LogFactory.getLog(ActualizarHorariosTask.class);
	private AgendaDAO agendaDAO;
	
	@Transactional
	public void ejecutar() {
		
		try {
			logger.info("Ejecutando cron de actualizacion de horarios...");
			
			for (Agenda agenda : agendaDAO.findAll()) {
				
				for (JornadaLaboralHabitual jornadaHabitual : agenda.getJornadasLaboralesHabituales()) {
					jornadaHabitual.actualizarHorarios();
				}
			}
			
			logger.info("Finalizado el cron de actualizacion de horarios");
		}
		catch (ExcepcionDeReglaDelNegocio e) {
			logger.error("ERROR: " + e.getMessage());
		}

	}
	
	public void setAgendaDAO(AgendaDAO agendaDAO) {
		this.agendaDAO = agendaDAO;
	}
	
}